package facade.fromKanYun;

/**
 * 作为facaade，持有Memory,CPU的实例
 * 任务让Computer帮咱们处理，我们无需直接和Memory，CPU打交道
 *
 * 如果我们没有Computer类，那么，CPU,Memory他们之间将会互相持有实例，产生关系，这样会产生严重的依赖，
 * 修改一个类，可能会带来其他类的修改，这不是我们想要看到的，有了Computer类，
 * 他们之间的关系被放到了Computer类里，这样就起到了解耦的作用，这就是外观facade模式
 *
 * 这里有点像去商场里买东西，咱们买东西只要到商店去买，而无需去生产厂家那里买
 *
 * 商店就可以称之为一个facade外观模式--->商品都在商店里
 */
public class Computer {
    private Memory memory;

    private CPU cpu;

    public Computer() {
        this.memory = new Memory();
        this.cpu = new CPU();
    }

    public void startup(){
        System.out.println("begin to start the computer...");
        memory.startup();
        cpu.startup();
        System.out.println("computer start finished...");
    }

    public void shutdown(){
        System.out.println("begin to close the computer...");
        memory.shutdown();
        cpu.shutdown();
        System.out.println("computer close finished...");
    }
}
